enumerate() 函式是一個內建的 Python 函式,
用於在迭代一個可迭代對象(如列表、元組、字符串等)時,
同時得到元素的隱性索引和值的元組。
它會返回一個 enumerate object,該對象可以被迭代,每次迭代返回一個包含索引和值的元組。
enumerate object 的特性:
enumerate() 函式的語法enumerate(iterable, start=0)
fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits):
print(index, fruit)
輸出結果:
0 apple
1 banana
2 cherry
簡潔: 相比於手動維護一個計數器,enumerate() 提供了一種更簡潔的方式來獲取索引和值。
易讀: enumerate() 的語法直觀,易於理解。
靈活: 可以自定義索引的起始值。
# 指定索引從 1 開始
for index, char in enumerate("hello", start=1):
print(index, char)
# 創建一個字典
fruits = ['apple', 'banana', 'cherry']
fruit_dict = dict(enumerate(fruits))
print(fruit_dict) # 输出:{0: 'apple', 1: 'banana', 2: 'cherry'}
dict(...)
:這個部分會將 enumerate() 產生的元組轉換成一個字典。字典是由鍵值對組成的,每個元組的第一个元素(索引)會作為字典的鍵,第二个元素(水果名稱)會作為字典的值。
fruit_dict = dict(enumerate(fruits))
print(fruit_dict['apple']) # 輸出:Traceback (most recent call stack) ... KeyError: 'apple'
print(fruit_dict[0]) # 輸出:apple
這個例子中,我們將 enumerate() 的結果轉換為字典,以便快速根據索引查找對應的水果。
fruits = ['apple', 'banana', 'cherry']
fruit_counts = {}
for index, fruit in enumerate(fruits):
fruit_counts[fruit] = fruit_counts.get(fruit, 0) + 1
這個例子中,我們不需要將 enumerate() 的結果轉換為字典,而是直接使用 for 迴圈來統計每個水果出現的次數。
students = ['Alice', 'Bob', 'Charlie']
scores = [85, 92, 78]
grades = ['A', 'A', 'B']
# 創建一個字典,每個學生對應一個包含成績和等級的元組
student_data = dict(zip(enumerate(students), zip(scores, grades)))
print(student_data)
輸出:
{(0, 'Alice'): (85, 'A'), (1, 'Bob'): (92, 'A'), (2, 'Charlie'): (78, 'B')}
解釋: